﻿using System;

namespace BestWise.Common
{
    /// <summary>
    /// 日期时间的扩展类。
    /// </summary>
    public static class DateTimeExtentions
    {
        /// <summary>
        /// 将日期时间转换成时间戳。
        /// </summary>
        /// <param name="dateTime">当前日期时间对象实例。</param>
        /// <returns>返回日期时间对象实例对应的时间戳</returns>
        public static long ToTicks(this DateTime dateTime)
        {
            TimeSpan ts = new TimeSpan(dateTime.ToUniversalTime().Ticks - new DateTime(1970, 1, 1).Ticks);
            return (long)ts.TotalMilliseconds;
        }

        /// <summary>
        /// 将时间戳转化成日期时间型对象实例。
        /// </summary>
        /// <param name="timeTicks">时间戳。</param>
        /// <returns>返回日期时间型对象实例。</returns>
        public static DateTime ToDateTime(this long timeTicks)
        {
            if (timeTicks > 9999999999)
                return new DateTime(1970, 1, 1).AddMilliseconds(timeTicks).ToLocalTime();
            else
                return new DateTime(1970, 1, 1).AddSeconds(timeTicks).ToLocalTime();
        }

        /// <summary>
        /// 将时间转换为短时间字符串
        /// </summary>
        /// <param name="dt">时间</param>
        /// <returns>返回转换后的时间字符串</returns>
        public static string FormatShortStr(DateTime? dt)
        {
            if (dt == null) return string.Empty;
            DateTime temp = (DateTime)dt;
            if (temp.Year <= 1900) return string.Empty;
            return temp.ToString("yyyy-MM-dd");
        }

        /// <summary>
        /// 将时间转换字符串
        /// </summary>
        /// <param name="dt">时间</param>
        /// <returns>返回转换后的时间字符串</returns>
        public static string FormatStr(DateTime? dt)
        {
            if (dt == null) return string.Empty;
            DateTime temp = (DateTime)dt;
            if (temp.Year <= 1900) return string.Empty;
            return temp.ToString("yyyy-MM-dd HH:mm:ss");
        }
    }
}